﻿// 逃狱的汉尼拔博士  NUMB3RS.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
//

#include <iostream>

/*
https://algospot.com/judge/problem/read/NUMB3RS

问题：

危险的杀人犯Dunibal博士逃脱了监狱。虽然警方已经贴上通缉令，并且全天候追捕他，但聪明机智的Dunibal博士并没有被轻易抓到。经过d天，警察终于找到了编程天才查理教授。查理教授通过分析Dunibal博士留下的笔记得出了以下假设：

Dunibal博士只在山路上行动，以避开检查。
Dunibal博士在越狱当天会逃到与监狱相邻的一个村庄来躲藏。
为了躲避搜索，Dunibal博士每天都会移动到相邻的村庄进行躲藏。
dunibal.png

为了验证这个假设，他们获得了与监狱相连的n个村庄的地图，如上图所示。假设Dunibal博士按照这个假设行动，并且如果有多个可选村庄，他会随机选择一个。请编写一个程序，在经过d天后计算Dunibal博士在每个村庄的概率。

例如，假设在地图中，监狱在第3个村庄。在逃跑后的第一天，Dunibal博士可以选择0号、1号、2号、4号或者5号村庄中的一个进行藏匿。因此，逃跑后的第一天，Dunibal博士在0号村庄躲藏的概率为1/5，在第二天Dunibal博士在1号村庄躲藏的概率为1/15。

输入：
输入的第一行是测试用例的数量c（1≤c≤50）。然后是每个测试用例的输入。每个测试用例包含三行：第一行包含村庄的数目n（2≤n≤50），逃跑后经过的天数d（1≤d≤100），监狱所在的村庄编号p（0≤p<n）。接下来的n行代表村庄地图，每行有n个整数，矩阵A[i][j]的值为1表示村庄i与村庄j之间有山路连接，为0表示没有连接。然后是一个整数t（1≤t≤n），表示要计算概率的村庄数。最后一行包含t个整数，表示要计算概率的村庄编号q（0≤q<n）。

输出：
对于每个测试用例，输出一行，包含t个浮点数，表示Dunibal博士在每个村庄的躲藏概率。如果概率小于10^(-7)，则输出为0。

示例输入：
2
5 2 0
0 1 1 1 0
1 0 0 0 1
1 0 0 0 0
1 0 0 0 0
0 1 0 0 0
3
0 2 4
8 2 3
0 1 1 1 0 0 0 0
1 0 0 1 0 0 0 0
1 0 0 1 0 0 0 0
1 1 1 0 1 1 0 0
0 0 0 1 0 0 1 1
0 0 0 1 0 0 0 1
0 0 0 0 1 0 0 0
0 0 0 0 1 1 0 0
4
3 1 2 6


0.83333333 0.00000000 0.16666667
0.43333333 0.06666667 0.06666667 0.06666667
*/
int main()
{
    std::cout << "Hello World!\n";
}

